const crypto = require("crypto");

//let hashs = crypto.getHashes() ;
//console.log( hashs );

const source = 'hellofeiyan' ;

let name ; // 用于保存加密算法摘要名称
let hash ; // 保存实现加密的Hash实例的地址
let buffer ; // 用来获取加密后的结果(是个缓冲区)
let result ; // 获取字符串形式的结果

name = 'md5' ; 
// 根据加密算法摘要名称创建相应的Hash实例(就是Hash类的一个实例)
hash = crypto.createHash( name );
hash.update( source ); // 对指定的字符串进行加密
buffer = hash.digest(); // 从Hash实例中获取解密后的结果
console.log( buffer );
result = buffer.toString( 'hex' );
console.log( result );
console.log( result.length );

console.log( '- - - - - - ');

name = 'sha1' ; 
// 根据加密算法摘要名称创建相应的Hash实例(就是Hash类的一个实例)
hash = crypto.createHash( name );
hash.update( source ); // 对指定的字符串进行加密
buffer = hash.digest(); // 从Hash实例中获取解密后的结果
result = buffer.toString( 'hex' );
console.log( result );
console.log( result.length );

console.log( '- - - - - - ');

name = 'sha512' ; 
// 根据加密算法摘要名称创建相应的Hash实例(就是Hash类的一个实例)
hash = crypto.createHash( name );
hash.update( source ); // 对指定的字符串进行加密
result = hash.digest( 'hex' ); // 从Hash实例中获取解密后的结果
console.log( result );
console.log( result.length );

console.log( '- - - - - - ');

hash = crypto.createHash( name );
hash.update( source );
result = hash.digest( 'Base64' ); // 从Hash实例中获取解密后的结果
console.log( result );
console.log( result.length );